﻿using GDM.Hogar.Aplicacion.Properties;
using GDM.Hogar.Controles.ControlesPersonalizados.Grilla;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace GDM.Hogar.Aplicacion.Formularios
{
    public abstract class FrmConsulta<T>
#if DEBUG
 : AdaptadorFrm
#else
     : FrmBase
#endif
    {
        protected IList<T> Datos { get; set; }

        protected abstract void CrearRegistro();

        protected abstract void EditarRegistro(T registro);

        protected abstract void EliminarRegistro(T registro);

        protected void InicializarGrilla(PagedFlexGrid grilla, Func<T, bool> criterio = null)
        {
            var query = criterio != null ? Datos.Where(criterio).AsQueryable() : Datos.AsQueryable();

            grilla.Configure(query, TamañoPagina);

            grilla.OnEdit = obj =>
            {
                var registro = (T)obj;
                if (registro != null) EditarRegistro(registro);
            };

            grilla.OnDelete = obj =>
            {
                if (MessageBox.Show(Resources.Eliminar_Registro, Resources.Eliminando,
                                    MessageBoxButtons.YesNo,
                                    MessageBoxIcon.Question) != DialogResult.Yes) return;
                var registro = (T)obj;
                if (registro != null) EliminarRegistro(registro);
            };

            grilla.OnCreate = CrearRegistro;

            if (!Datos.Any())
                grilla.HidePager();
        }
    }
}